/* ------------------------------------------------------------------------------
 *
 *  # Timeline
 *
 *  Styles for timeline in 3 layouts: left, right and centered
 *
 *  Version: 1.1
 *  Latest update: Dec 11, 2015
 *
 * ---------------------------------------------------------------------------- */

// Base
// ------------------------------

.timeline {
  position: relative;
  height: 100%;

  &:before,
  &:after {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    margin-left: -(@timeline-line-width);
    background-color: @timeline-line-color;
    height: (@timeline-line-width * 2);
    width: (@timeline-line-width * 2);
    border-radius: 50%;
    z-index: 1;
  }

  &:after {
    top: auto;
    bottom: 0;
  }
}

// Container
// ------------------------------

.timeline-container {
  position: relative;
  padding-top: (@line-height-computed / 2);
  margin-top: -(@line-height-computed / 2);
  padding-bottom: 1px;

  &:after {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    margin-left: -(@timeline-line-width / 2);
    background-color: @timeline-line-color;
    height: 100%;
    width: @timeline-line-width;
    z-index: -1;
  }
}

// Content
// ------------------------------

// Row
.timeline-row {
  position: relative;
}

// Content
.timeline-content {
  margin-bottom: @line-height-computed;
}

// Date
// ------------------------------

.timeline-date {
  text-align: center;
  background-color: @body-bg;
  position: relative;
  z-index: 1;
  padding-top: @line-height-computed;
  padding-bottom: @line-height-computed;
  margin-bottom: @line-height-computed;

  &:before,
  &:after {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    margin-left: -(@timeline-line-width);
    background-color: @timeline-line-color;
    height: (@timeline-line-width * 2);
    width: (@timeline-line-width * 2);
    border-radius: 50%;
    z-index: 1;
  }

  &:after {
    top: auto;
    bottom: 0;
  }

  .panel & {
    background-color: @panel-bg;
  }
}

// Time
// ------------------------------

.timeline-time {
  text-align: center;
  padding-top: @line-height-computed;
  padding-bottom: @line-height-computed;
  background-color: @body-bg;
  position: relative;
  margin-bottom: @line-height-computed;

  &:before,
  &:after {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    margin-left: -(@timeline-line-width);
    background-color: @timeline-line-color;
    height: (@timeline-line-width * 2);
    width: (@timeline-line-width * 2);
    border-radius: 50%;
  }

  &:after {
    top: auto;
    bottom: 0;
  }

  .panel & {
    background-color: @panel-bg;
  }

  span {
    display: block;
    color: @text-muted;
    font-size: @font-size-small;

    &:before {
      content: '•';
      display: inline-block;
      margin-right: 5px;
      position: relative;
      top: 1px;
    }
  }

  @media (min-width: @screen-md) {
    &:before,
    &:after {
      content: none;
    }
  }
}

// Icon and image
// ------------------------------

.timeline-icon {
  width: @timeline-icon-size;
  height: @timeline-icon-size;
  border-radius: 50%;
  margin: 0 auto @line-height-computed auto;
  background-color: #fff;
  border: @timeline-icon-border-width solid @body-bg;

  .panel & {
    border-color: @panel-bg;
  }

  // Icon
  div {
    border-radius: 50%;
    height: 100%;
    .box-shadow(0 0 0 2px @timeline-line-color inset);

    &[class*=bg-] {
      .box-shadow(none);
    }

    > i {
      display: block;
      line-height: (@timeline-icon-size - (@timeline-icon-border-width * 2));
      top: 0;
    }
  }

  // Image
  img {
    width: (@timeline-icon-size - (@timeline-icon-border-width * 2));
    height: (@timeline-icon-size - (@timeline-icon-border-width * 2));
    border-radius: 50%;
  }
}

@media (min-width: @screen-md) {

  // Positions
  // ------------------------------
  // Center layout
  .timeline-center {

    // Row
    .timeline-row {
      margin-right: 50%;
      padding-right: (@timeline-icon-size - @timeline-icon-border-width);
    }

    // Even post
    .post-even {
      margin-right: 0;
      padding-right: 0;
      margin-left: 50%;
      padding-left: (@timeline-icon-size - @timeline-icon-border-width);
    }

    // Full width post
    .post-full {
      margin: 0;
      padding: 0;

      .timeline-content {
        position: relative;

        &:before,
        &:after {
          content: '';
          border-style: solid;
          border-color: @body-bg;
          display: block;
          position: absolute;
          left: 0;
          right: 0;
        }

        &:before {
          border-width: @timeline-icon-border-width 0 0 0;
          top: -(@timeline-icon-border-width + 1);
        }

        &:after {
          border-width: 0 0 @timeline-icon-border-width 0;
          bottom: -(@timeline-icon-border-width + 1);
        }
      }
    }
  }

  // Left layout
  .timeline-left {

    // Vertical line
    .timeline-container:after,
    &:before,
    &:after,
    .timeline-date:before,
    .timeline-date:after {
      left: (@timeline-icon-size / 2);
    }

    // Content padding
    .timeline-row,
    .timeline-date {
      padding-left: (@timeline-icon-size + @line-height-computed);
    }
  }

  // Right layout
  .timeline-right {

    // Vertical line
    .timeline-container:after,
    &:before,
    &:after,
    .timeline-date:before,
    .timeline-date:after {
      left: auto;
      right: (@timeline-icon-size / 2);
      margin-left: 0;
      margin-right: -(@timeline-line-width);
    }
    .timeline-container:after {
      margin-right: -(@timeline-line-width / 2);
    }

    // Content padding
    .timeline-row,
    .timeline-date {
      padding-right: (@timeline-icon-size + @line-height-computed);
    }
  }

  // Reduce date vertical spacing in both
  .timeline-left .timeline-date,
  .timeline-right .timeline-date {
    padding-top: (@line-height-computed / 2);
    padding-bottom: (@line-height-computed / 2);
  }

  // Icon
  // ------------------------------
  // Base
  .timeline-icon {
    position: absolute;
    top: (@line-height-computed / 2);

    &:after {
      content: "";
      position: absolute;
      top: 50%;
      margin-top: -(@timeline-line-width / 2);
      height: @timeline-line-width;
      width: ((@timeline-icon-size / 2) - (@timeline-icon-border-width * 2));
      background-color: @timeline-line-color;
      z-index: 1;
    }
  }

  // In left layout
  .timeline-left {
    .timeline-icon {
      left: 0;

      &:after {
        left: 100%;
        margin-left: @timeline-icon-border-width;
      }
    }
  }

  // In right layout
  .timeline-right {
    .timeline-icon {
      right: 0;

      &:after {
        right: 100%;
        margin-right: @timeline-icon-border-width;
      }
    }
  }

  // In centered layout
  .timeline-center {

    // Row
    .timeline-row {
      &:not(.post-full) .timeline-icon {
        left: 100%;
        margin-left: -(@timeline-icon-size / 2);
      }

      &.post-even .timeline-icon {
        left: auto;
        right: 100%;
        margin-left: 0;
        margin-right: -(@timeline-icon-size / 2);
      }
    }

    // Left horizontal line
    .timeline-icon:after {
      right: 100%;
      margin-right: @timeline-icon-border-width;
    }

    // Right horizontal line
    .post-even .timeline-icon:after {
      left: 100%;
      margin-left: @timeline-icon-border-width;
    }

    // Full width post
    .post-full .timeline-icon {
      position: static;

      &:after {
        content: none;
      }
    }
  }

  // Time
  // ------------------------------
  .timeline-time {
    padding: 0;
    text-align: inherit;
    background-color: transparent;

    &:before {
      content: none;
    }
  }

  // In left and right layouts
  .timeline-left,
  .timeline-right {
    .timeline-time {
      padding-top: (@line-height-computed / 2);
      margin-bottom: (@line-height-computed);
      padding-left: (@line-height-computed / 2);
    }
  }

  .timeline-right .timeline-time {
    text-align: right;
    padding-left: 0;
    padding-right: (@line-height-computed / 2);
  }

  // In center layout
  .timeline-center {
    .timeline-time,
    .post-full .timeline-time {
      position: absolute;
      left: 100%;
      top: ((@line-height-computed / 2) + 5);
      width: 100%;
      padding-left: (@timeline-icon-size - @timeline-icon-border-width);
    }

    .post-even,
    .post-full {
      .timeline-time {
        left: auto;
        right: 100%;
        padding-left: 0;
        padding-right: (@timeline-icon-size - @timeline-icon-border-width);
        text-align: right;
      }
    }

    .post-full .timeline-time {
      right: 50%;
      top: ((@line-height-computed / 2) - 5);
    }
  }
}
